package aplicacion;

import titiritero.ControladorJuego;
import aplicacion.modelo.Juego;
import aplicacion.modelo.Tablero;
import aplicacion.vista.VentanaDeJuego;
import aplicacion.vista.VentanaPrincipal;

public class Programa {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		VentanaPrincipal ventanaPrincipal = new VentanaPrincipal();
		
		while(true) {
			ventanaPrincipal.esperarInicioDeJuego();
			iniciarJuego();
		}
	}

	public static void iniciarJuego() {
		/*
		 * Primero instancio el modelo: el mapa del pacman con sus respectivos objetos
		 */
		Juego.reinicializarJuego();
		Juego juego = Juego.getInstance();
		Tablero tablero = juego.getTablero();
		
		/*
		 * Luego instancio los objetos del framework: una ventana y el controlador
		 */	
		ControladorJuego controlador = new ControladorJuego();
		
		VentanaDeJuego ventana = new VentanaDeJuego(controlador, tablero.getCantidadColumnas() * 24 , (tablero.getCantidadFilas()+1) * 24);
		
		//VentanaPrincipal ventana = new VentanaPrincipal(controlador, 800, 800);
		controlador.setSuperficieDeDibujo(ventana.getSuperficieDeDibujo());
		
		ventana.setVisible(true);
		
		controlador.inicializarMapa(tablero);
		controlador.inicializarFantasmas(tablero);
		controlador.inicializarPacman(tablero);
		
		
		/*
		 * finalmente establezco el intervalo de sleep dentro del gameloop
		 * y comienzo a ejecutar
		 */
		
		controlador.setIntervaloSimulacion(25);
		controlador.comenzarJuego();
		
		ventana.setVisible(false);
		ventana.dispose();
	}
}
